﻿using System;
using System.Collections.Generic;
using System.Text;

namespace SweetSQL.Data
{
    internal interface IDatabase
    {
        IEnumerable<TTable> Select<TTable>(Table<TTable> table) where TTable : class, new();

        TTable Select<TTable>(Table<TTable> table, TTable instance) where TTable : class, new();

        void Insert<TTable>(Table<TTable> table, TTable instance) where TTable : class, new();

        void BulkInsert<TTable>(Table<TTable> table, IEnumerable<TTable> enumerable) where TTable : class, new();

        int Update<TTable>(Table<TTable> table, TTable instance) where TTable : class, new();

        int Delete<TTable>(Table<TTable> table) where TTable : class, new();

        int Delete<TTable>(Table<TTable> table, TTable instance) where TTable : class, new();

        int Drop<TTable>(Table<TTable> table) where TTable : class, new();

        int Create<TTable>(Table<TTable> table) where TTable : class, new();

        int ExecuteNonQuery<TTable>(Table<TTable> table, RawQuery rawQuery) where TTable : class, new();

        IEnumerable<TTable> ExecuteReader<TTable>(Table<TTable> table, RawQuery rawQuery) where TTable : class, new();
    }
}
